<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Caffe: caffe::DeconvolutionLayer&lt; Dtype &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Caffe
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecaffe.html">caffe</a></li><li class="navelem"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html">DeconvolutionLayer</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classcaffe_1_1DeconvolutionLayer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">caffe::DeconvolutionLayer&lt; Dtype &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as <a class="el" href="classcaffe_1_1ConvolutionLayer.html" title="Convolves the input image with a bank of learned filters, and (optionally) adds biases. ">ConvolutionLayer</a>.  
 <a href="classcaffe_1_1DeconvolutionLayer.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="deconv__layer_8hpp_source.html">deconv_layer.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for caffe::DeconvolutionLayer&lt; Dtype &gt;:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcaffe_1_1DeconvolutionLayer.png" usemap="#caffe::DeconvolutionLayer_3C_20Dtype_20_3E_map" alt=""/>
  <map id="caffe::DeconvolutionLayer_3C_20Dtype_20_3E_map" name="caffe::DeconvolutionLayer_3C_20Dtype_20_3E_map">
<area href="classcaffe_1_1BaseConvolutionLayer.html" title="Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer..." alt="caffe::BaseConvolutionLayer&lt; Dtype &gt;" shape="rect" coords="0,56,232,80"/>
<area href="classcaffe_1_1Layer.html" title="An interface for the units of computation which can be composed into a Net. " alt="caffe::Layer&lt; Dtype &gt;" shape="rect" coords="0,0,232,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a48f1d8c75f9fb83d4af78a84cff187e8"><td class="memItemLeft" align="right" valign="top"><a id="a48f1d8c75f9fb83d4af78a84cff187e8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>DeconvolutionLayer</b> (const LayerParameter &amp;param)</td></tr>
<tr class="separator:a48f1d8c75f9fb83d4af78a84cff187e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc0d5ad1c1c4f20e6bdca42fc37fbfe3"><td class="memItemLeft" align="right" valign="top"><a id="acc0d5ad1c1c4f20e6bdca42fc37fbfe3"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html#acc0d5ad1c1c4f20e6bdca42fc37fbfe3">type</a> () const</td></tr>
<tr class="memdesc:acc0d5ad1c1c4f20e6bdca42fc37fbfe3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layer type. <br /></td></tr>
<tr class="separator:acc0d5ad1c1c4f20e6bdca42fc37fbfe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcaffe_1_1BaseConvolutionLayer"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcaffe_1_1BaseConvolutionLayer')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcaffe_1_1BaseConvolutionLayer.html">caffe::BaseConvolutionLayer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a42f9ea86a8ede098bda11f582a31ffc1 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a42f9ea86a8ede098bda11f582a31ffc1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BaseConvolutionLayer</b> (const LayerParameter &amp;param)</td></tr>
<tr class="separator:a42f9ea86a8ede098bda11f582a31ffc1 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a422e1ef9e6c8b4574f7677bb125e234a inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a422e1ef9e6c8b4574f7677bb125e234a">LayerSetUp</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:a422e1ef9e6c8b4574f7677bb125e234a inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does layer-specific setup: your layer should implement this function as well as Reshape.  <a href="classcaffe_1_1BaseConvolutionLayer.html#a422e1ef9e6c8b4574f7677bb125e234a">More...</a><br /></td></tr>
<tr class="separator:a422e1ef9e6c8b4574f7677bb125e234a inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa215338f200c832081f2719a54bc5256 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#aa215338f200c832081f2719a54bc5256">Reshape</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:aa215338f200c832081f2719a54bc5256 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.  <a href="classcaffe_1_1BaseConvolutionLayer.html#aa215338f200c832081f2719a54bc5256">More...</a><br /></td></tr>
<tr class="separator:aa215338f200c832081f2719a54bc5256 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3d861ed15f6e41c6257d6a10defa7eb inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb">MinBottomBlobs</a> () const</td></tr>
<tr class="memdesc:aa3d861ed15f6e41c6257d6a10defa7eb inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.  <a href="classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb">More...</a><br /></td></tr>
<tr class="separator:aa3d861ed15f6e41c6257d6a10defa7eb inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4092cf1b48e18e5d82cd714ae6e8547 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547">MinTopBlobs</a> () const</td></tr>
<tr class="memdesc:ae4092cf1b48e18e5d82cd714ae6e8547 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.  <a href="classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547">More...</a><br /></td></tr>
<tr class="separator:ae4092cf1b48e18e5d82cd714ae6e8547 inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8e839460bf52abe3df2008b99a1810d inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d">EqualNumBottomTopBlobs</a> () const</td></tr>
<tr class="memdesc:ad8e839460bf52abe3df2008b99a1810d inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the layer requires an equal number of bottom and top blobs.  <a href="classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d">More...</a><br /></td></tr>
<tr class="separator:ad8e839460bf52abe3df2008b99a1810d inherit pub_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcaffe_1_1Layer"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcaffe_1_1Layer')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcaffe_1_1Layer.html">caffe::Layer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a7b4e4ccea08c7b8b15acc6829d5735f6 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a7b4e4ccea08c7b8b15acc6829d5735f6">Layer</a> (const LayerParameter &amp;param)</td></tr>
<tr class="separator:a7b4e4ccea08c7b8b15acc6829d5735f6 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18d6bfdb535ab8e96a971dec4ae39a84 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a18d6bfdb535ab8e96a971dec4ae39a84">SetUp</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:a18d6bfdb535ab8e96a971dec4ae39a84 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements common layer setup functionality.  <a href="classcaffe_1_1Layer.html#a18d6bfdb535ab8e96a971dec4ae39a84">More...</a><br /></td></tr>
<tr class="separator:a18d6bfdb535ab8e96a971dec4ae39a84 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab57d272dabe8c709d2a785eebe72ca57 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">Dtype&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#ab57d272dabe8c709d2a785eebe72ca57">Forward</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:ab57d272dabe8c709d2a785eebe72ca57 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given the bottom blobs, compute the top blobs and the loss.  <a href="classcaffe_1_1Layer.html#ab57d272dabe8c709d2a785eebe72ca57">More...</a><br /></td></tr>
<tr class="separator:ab57d272dabe8c709d2a785eebe72ca57 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a183d343f5183a4762307f2c5e6ed1e12 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a183d343f5183a4762307f2c5e6ed1e12">Backward</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top, const vector&lt; bool &gt; &amp;propagate_down, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom)</td></tr>
<tr class="memdesc:a183d343f5183a4762307f2c5e6ed1e12 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given the top blob error gradients, compute the bottom blob error gradients.  <a href="classcaffe_1_1Layer.html#a183d343f5183a4762307f2c5e6ed1e12">More...</a><br /></td></tr>
<tr class="separator:a183d343f5183a4762307f2c5e6ed1e12 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf4524ce8641a30a8a4784aee1b2b4c8 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="aaf4524ce8641a30a8a4784aee1b2b4c8"></a>
vector&lt; shared_ptr&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#aaf4524ce8641a30a8a4784aee1b2b4c8">blobs</a> ()</td></tr>
<tr class="memdesc:aaf4524ce8641a30a8a4784aee1b2b4c8 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the vector of learnable parameter blobs. <br /></td></tr>
<tr class="separator:aaf4524ce8641a30a8a4784aee1b2b4c8 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff82274f146e2b6922d0ebac2aaf215 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="adff82274f146e2b6922d0ebac2aaf215"></a>
const LayerParameter &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#adff82274f146e2b6922d0ebac2aaf215">layer_param</a> () const</td></tr>
<tr class="memdesc:adff82274f146e2b6922d0ebac2aaf215 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layer parameter. <br /></td></tr>
<tr class="separator:adff82274f146e2b6922d0ebac2aaf215 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a1754828dda22cc8daa2f63377f3579 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="a4a1754828dda22cc8daa2f63377f3579"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a4a1754828dda22cc8daa2f63377f3579">ToProto</a> (LayerParameter *param, bool write_diff=false)</td></tr>
<tr class="memdesc:a4a1754828dda22cc8daa2f63377f3579 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the layer parameter to a protocol buffer. <br /></td></tr>
<tr class="separator:a4a1754828dda22cc8daa2f63377f3579 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a899410336f30821644c8bd6c69a070c9 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="a899410336f30821644c8bd6c69a070c9"></a>
Dtype&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a899410336f30821644c8bd6c69a070c9">loss</a> (const int top_index) const</td></tr>
<tr class="memdesc:a899410336f30821644c8bd6c69a070c9 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the scalar loss associated with a top blob at a given index. <br /></td></tr>
<tr class="separator:a899410336f30821644c8bd6c69a070c9 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a899b09f4b91ada8545b3a43ee91e0d69 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="a899b09f4b91ada8545b3a43ee91e0d69"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a899b09f4b91ada8545b3a43ee91e0d69">set_loss</a> (const int top_index, const Dtype value)</td></tr>
<tr class="memdesc:a899b09f4b91ada8545b3a43ee91e0d69 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the loss associated with a top blob at a given index. <br /></td></tr>
<tr class="separator:a899b09f4b91ada8545b3a43ee91e0d69 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e5ee0494d85f5f55fc4396537cbc60f inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f">ExactNumBottomBlobs</a> () const</td></tr>
<tr class="memdesc:a8e5ee0494d85f5f55fc4396537cbc60f inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.  <a href="classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f">More...</a><br /></td></tr>
<tr class="separator:a8e5ee0494d85f5f55fc4396537cbc60f inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8bdc989053e0363ab032026b46de7c3 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3">MaxBottomBlobs</a> () const</td></tr>
<tr class="memdesc:af8bdc989053e0363ab032026b46de7c3 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.  <a href="classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3">More...</a><br /></td></tr>
<tr class="separator:af8bdc989053e0363ab032026b46de7c3 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64e2ca72c719e4b2f1f9216ccfb0d37f inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f">ExactNumTopBlobs</a> () const</td></tr>
<tr class="memdesc:a64e2ca72c719e4b2f1f9216ccfb0d37f inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.  <a href="classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f">More...</a><br /></td></tr>
<tr class="separator:a64e2ca72c719e4b2f1f9216ccfb0d37f inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6c03df0b6e40e776c94001e19994a2e inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e">MaxTopBlobs</a> () const</td></tr>
<tr class="memdesc:ac6c03df0b6e40e776c94001e19994a2e inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.  <a href="classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e">More...</a><br /></td></tr>
<tr class="separator:ac6c03df0b6e40e776c94001e19994a2e inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50130669e230a168d1f8fbbb8171f054 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a50130669e230a168d1f8fbbb8171f054">AutoTopBlobs</a> () const</td></tr>
<tr class="memdesc:a50130669e230a168d1f8fbbb8171f054 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether "anonymous" top blobs are created automatically by the layer.  <a href="classcaffe_1_1Layer.html#a50130669e230a168d1f8fbbb8171f054">More...</a><br /></td></tr>
<tr class="separator:a50130669e230a168d1f8fbbb8171f054 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c0b2bffcd6d57e4bd49f820941badb6 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a1c0b2bffcd6d57e4bd49f820941badb6">AllowForceBackward</a> (const int bottom_index) const</td></tr>
<tr class="memdesc:a1c0b2bffcd6d57e4bd49f820941badb6 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether to allow force_backward for a given bottom blob index.  <a href="classcaffe_1_1Layer.html#a1c0b2bffcd6d57e4bd49f820941badb6">More...</a><br /></td></tr>
<tr class="separator:a1c0b2bffcd6d57e4bd49f820941badb6 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a3708013b0231e71d725252e10ce6e3 inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a1a3708013b0231e71d725252e10ce6e3">param_propagate_down</a> (const int param_id)</td></tr>
<tr class="memdesc:a1a3708013b0231e71d725252e10ce6e3 inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.  <a href="classcaffe_1_1Layer.html#a1a3708013b0231e71d725252e10ce6e3">More...</a><br /></td></tr>
<tr class="separator:a1a3708013b0231e71d725252e10ce6e3 inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a6fcb843803ed556f0a69cc2864379b inherit pub_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top"><a id="a9a6fcb843803ed556f0a69cc2864379b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a9a6fcb843803ed556f0a69cc2864379b">set_param_propagate_down</a> (const int param_id, const bool value)</td></tr>
<tr class="memdesc:a9a6fcb843803ed556f0a69cc2864379b inherit pub_methods_classcaffe_1_1Layer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. <br /></td></tr>
<tr class="separator:a9a6fcb843803ed556f0a69cc2864379b inherit pub_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a32782e43a4e5edaa7743359f49fda563"><td class="memItemLeft" align="right" valign="top"><a id="a32782e43a4e5edaa7743359f49fda563"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html#a32782e43a4e5edaa7743359f49fda563">Forward_cpu</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:a32782e43a4e5edaa7743359f49fda563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using the CPU device, compute the layer output. <br /></td></tr>
<tr class="separator:a32782e43a4e5edaa7743359f49fda563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cc6c8c75dc09c0e990135a175f84f02"><td class="memItemLeft" align="right" valign="top"><a id="a7cc6c8c75dc09c0e990135a175f84f02"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html#a7cc6c8c75dc09c0e990135a175f84f02">Forward_gpu</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="memdesc:a7cc6c8c75dc09c0e990135a175f84f02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using the GPU device, compute the layer output. Fall back to <a class="el" href="classcaffe_1_1DeconvolutionLayer.html#a32782e43a4e5edaa7743359f49fda563" title="Using the CPU device, compute the layer output. ">Forward_cpu()</a> if unavailable. <br /></td></tr>
<tr class="separator:a7cc6c8c75dc09c0e990135a175f84f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43c00eac97e8c9b3cfb0de0b5904b43f"><td class="memItemLeft" align="right" valign="top"><a id="a43c00eac97e8c9b3cfb0de0b5904b43f"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html#a43c00eac97e8c9b3cfb0de0b5904b43f">Backward_cpu</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top, const vector&lt; bool &gt; &amp;propagate_down, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom)</td></tr>
<tr class="memdesc:a43c00eac97e8c9b3cfb0de0b5904b43f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. <br /></td></tr>
<tr class="separator:a43c00eac97e8c9b3cfb0de0b5904b43f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7c4889f3460d4ca2c291c2d10de0d98"><td class="memItemLeft" align="right" valign="top"><a id="ab7c4889f3460d4ca2c291c2d10de0d98"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1DeconvolutionLayer.html#ab7c4889f3460d4ca2c291c2d10de0d98">Backward_gpu</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top, const vector&lt; bool &gt; &amp;propagate_down, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom)</td></tr>
<tr class="memdesc:ab7c4889f3460d4ca2c291c2d10de0d98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to <a class="el" href="classcaffe_1_1DeconvolutionLayer.html#a43c00eac97e8c9b3cfb0de0b5904b43f" title="Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...">Backward_cpu()</a> if unavailable. <br /></td></tr>
<tr class="separator:ab7c4889f3460d4ca2c291c2d10de0d98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa71cf7a9ff4cebe12721783070f49588"><td class="memItemLeft" align="right" valign="top"><a id="aa71cf7a9ff4cebe12721783070f49588"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>reverse_dimensions</b> ()</td></tr>
<tr class="separator:aa71cf7a9ff4cebe12721783070f49588"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81da6f09a0b00db0f0e1a4e5fe2cb4ee"><td class="memItemLeft" align="right" valign="top"><a id="a81da6f09a0b00db0f0e1a4e5fe2cb4ee"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>compute_output_shape</b> ()</td></tr>
<tr class="separator:a81da6f09a0b00db0f0e1a4e5fe2cb4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classcaffe_1_1BaseConvolutionLayer"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classcaffe_1_1BaseConvolutionLayer')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classcaffe_1_1BaseConvolutionLayer.html">caffe::BaseConvolutionLayer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a2870d22074426089e31afd864b989743 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a2870d22074426089e31afd864b989743"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>forward_cpu_gemm</b> (const Dtype *input, const Dtype *weights, Dtype *output, bool skip_im2col=false)</td></tr>
<tr class="separator:a2870d22074426089e31afd864b989743 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00ede6bbe48c3a6dedd21308a48f979f inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a00ede6bbe48c3a6dedd21308a48f979f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>forward_cpu_bias</b> (Dtype *output, const Dtype *bias)</td></tr>
<tr class="separator:a00ede6bbe48c3a6dedd21308a48f979f inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3006035856c7f49371fe2b93ed38c935 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a3006035856c7f49371fe2b93ed38c935"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>backward_cpu_gemm</b> (const Dtype *input, const Dtype *weights, Dtype *output)</td></tr>
<tr class="separator:a3006035856c7f49371fe2b93ed38c935 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0ce44e831ad98176dc8c06f2069df2e inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="aa0ce44e831ad98176dc8c06f2069df2e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>weight_cpu_gemm</b> (const Dtype *input, const Dtype *output, Dtype *weights)</td></tr>
<tr class="separator:aa0ce44e831ad98176dc8c06f2069df2e inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840ea8c0a485047a9760b7194b68db0c inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a840ea8c0a485047a9760b7194b68db0c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>backward_cpu_bias</b> (Dtype *bias, const Dtype *input)</td></tr>
<tr class="separator:a840ea8c0a485047a9760b7194b68db0c inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace6f5e890e06e4812cf10e841f279346 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="ace6f5e890e06e4812cf10e841f279346"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>forward_gpu_gemm</b> (const Dtype *col_input, const Dtype *weights, Dtype *output, bool skip_im2col=false)</td></tr>
<tr class="separator:ace6f5e890e06e4812cf10e841f279346 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a1f9d98d332411a481d82c10d76b474 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a2a1f9d98d332411a481d82c10d76b474"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>forward_gpu_bias</b> (Dtype *output, const Dtype *bias)</td></tr>
<tr class="separator:a2a1f9d98d332411a481d82c10d76b474 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aece62d609b5fb36990ef6d5c48472efe inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="aece62d609b5fb36990ef6d5c48472efe"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>backward_gpu_gemm</b> (const Dtype *input, const Dtype *weights, Dtype *col_output)</td></tr>
<tr class="separator:aece62d609b5fb36990ef6d5c48472efe inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c2e76ae5046570087f6af56180787b5 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a2c2e76ae5046570087f6af56180787b5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>weight_gpu_gemm</b> (const Dtype *col_input, const Dtype *output, Dtype *weights)</td></tr>
<tr class="separator:a2c2e76ae5046570087f6af56180787b5 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbaf526a70e5106b79d8da94e8d4aa06 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="abbaf526a70e5106b79d8da94e8d4aa06"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>backward_gpu_bias</b> (Dtype *bias, const Dtype *input)</td></tr>
<tr class="separator:abbaf526a70e5106b79d8da94e8d4aa06 inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6324d4ab918a7b09399aa85a8a03737d inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a6324d4ab918a7b09399aa85a8a03737d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a6324d4ab918a7b09399aa85a8a03737d">input_shape</a> (int i)</td></tr>
<tr class="memdesc:a6324d4ab918a7b09399aa85a8a03737d inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the input. <br /></td></tr>
<tr class="separator:a6324d4ab918a7b09399aa85a8a03737d inherit pro_methods_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classcaffe_1_1Layer"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classcaffe_1_1Layer')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classcaffe_1_1Layer.html">caffe::Layer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a55c8036130225fbc874a986bdf4b27e2 inherit pro_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a55c8036130225fbc874a986bdf4b27e2">CheckBlobCounts</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;bottom, const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="separator:a55c8036130225fbc874a986bdf4b27e2 inherit pro_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04eb2a3d1d59c64cd64c233217d5d6fc inherit pro_methods_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a04eb2a3d1d59c64cd64c233217d5d6fc">SetLossWeights</a> (const vector&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; *&gt; &amp;top)</td></tr>
<tr class="separator:a04eb2a3d1d59c64cd64c233217d5d6fc inherit pro_methods_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classcaffe_1_1BaseConvolutionLayer')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classcaffe_1_1BaseConvolutionLayer.html">caffe::BaseConvolutionLayer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a0a2f112eec8a7cbd13888185d4fb36b0 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a0a2f112eec8a7cbd13888185d4fb36b0"></a>
<a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a0a2f112eec8a7cbd13888185d4fb36b0">kernel_shape_</a></td></tr>
<tr class="memdesc:a0a2f112eec8a7cbd13888185d4fb36b0 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of a filter kernel. <br /></td></tr>
<tr class="separator:a0a2f112eec8a7cbd13888185d4fb36b0 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af638d3d8e67c33443cb11cb000368e73 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="af638d3d8e67c33443cb11cb000368e73"></a>
<a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#af638d3d8e67c33443cb11cb000368e73">stride_</a></td></tr>
<tr class="memdesc:af638d3d8e67c33443cb11cb000368e73 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the stride. <br /></td></tr>
<tr class="separator:af638d3d8e67c33443cb11cb000368e73 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a897ead2823e9031863e2151e71229e35 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a897ead2823e9031863e2151e71229e35"></a>
<a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a897ead2823e9031863e2151e71229e35">pad_</a></td></tr>
<tr class="memdesc:a897ead2823e9031863e2151e71229e35 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the padding. <br /></td></tr>
<tr class="separator:a897ead2823e9031863e2151e71229e35 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f929109b5c05ba6086d4c2a741ad4a inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a91f929109b5c05ba6086d4c2a741ad4a"></a>
<a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a91f929109b5c05ba6086d4c2a741ad4a">dilation_</a></td></tr>
<tr class="memdesc:a91f929109b5c05ba6086d4c2a741ad4a inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the dilation. <br /></td></tr>
<tr class="separator:a91f929109b5c05ba6086d4c2a741ad4a inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63756d6ef00f6491939e539094c21397 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a63756d6ef00f6491939e539094c21397"></a>
<a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a63756d6ef00f6491939e539094c21397">conv_input_shape_</a></td></tr>
<tr class="memdesc:a63756d6ef00f6491939e539094c21397 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the convolution input. <br /></td></tr>
<tr class="separator:a63756d6ef00f6491939e539094c21397 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dd3f4ea6e17fe155efe537c120a3de4 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a9dd3f4ea6e17fe155efe537c120a3de4"></a>
vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#a9dd3f4ea6e17fe155efe537c120a3de4">col_buffer_shape_</a></td></tr>
<tr class="memdesc:a9dd3f4ea6e17fe155efe537c120a3de4 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the col_buffer. <br /></td></tr>
<tr class="separator:a9dd3f4ea6e17fe155efe537c120a3de4 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0892b61454ba086c4c74b78d910bf31 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="af0892b61454ba086c4c74b78d910bf31"></a>
vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1BaseConvolutionLayer.html#af0892b61454ba086c4c74b78d910bf31">output_shape_</a></td></tr>
<tr class="memdesc:af0892b61454ba086c4c74b78d910bf31 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="mdescLeft">&#160;</td><td class="mdescRight">The spatial dimensions of the output. <br /></td></tr>
<tr class="separator:af0892b61454ba086c4c74b78d910bf31 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a91469895adc7114eecee92bb4f81a1 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a8a91469895adc7114eecee92bb4f81a1"></a>
const vector&lt; int &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>bottom_shape_</b></td></tr>
<tr class="separator:a8a91469895adc7114eecee92bb4f81a1 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8eac7ce95d86d01f026b649787a1920b inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a8eac7ce95d86d01f026b649787a1920b"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>num_spatial_axes_</b></td></tr>
<tr class="separator:a8eac7ce95d86d01f026b649787a1920b inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a73bde5834135df30eb2649bd510cb inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="af5a73bde5834135df30eb2649bd510cb"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>bottom_dim_</b></td></tr>
<tr class="separator:af5a73bde5834135df30eb2649bd510cb inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2221107608862f0a81a97f87363967ec inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a2221107608862f0a81a97f87363967ec"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>top_dim_</b></td></tr>
<tr class="separator:a2221107608862f0a81a97f87363967ec inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f1ce7e7343b3c10a58913fc3728e6d2 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a3f1ce7e7343b3c10a58913fc3728e6d2"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>channel_axis_</b></td></tr>
<tr class="separator:a3f1ce7e7343b3c10a58913fc3728e6d2 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04e2625c95d319ff11bfb98ded1fe9e9 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a04e2625c95d319ff11bfb98ded1fe9e9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>num_</b></td></tr>
<tr class="separator:a04e2625c95d319ff11bfb98ded1fe9e9 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9f8d85682bd1bcded1bf4b87061f515 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="ab9f8d85682bd1bcded1bf4b87061f515"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>channels_</b></td></tr>
<tr class="separator:ab9f8d85682bd1bcded1bf4b87061f515 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae05b3ec701c6b0277ba5689b88d8fc24 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="ae05b3ec701c6b0277ba5689b88d8fc24"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>group_</b></td></tr>
<tr class="separator:ae05b3ec701c6b0277ba5689b88d8fc24 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a215df1c90a686e075c8851cb7561d289 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a215df1c90a686e075c8851cb7561d289"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>out_spatial_dim_</b></td></tr>
<tr class="separator:a215df1c90a686e075c8851cb7561d289 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7b74e11196840561a451813a5aa4321 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="af7b74e11196840561a451813a5aa4321"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>weight_offset_</b></td></tr>
<tr class="separator:af7b74e11196840561a451813a5aa4321 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac22f72160f6b4ee54d1139095d09d853 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="ac22f72160f6b4ee54d1139095d09d853"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>num_output_</b></td></tr>
<tr class="separator:ac22f72160f6b4ee54d1139095d09d853 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af984e3e89a7b9d6d930ed93d29e06cb4 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="af984e3e89a7b9d6d930ed93d29e06cb4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>bias_term_</b></td></tr>
<tr class="separator:af984e3e89a7b9d6d930ed93d29e06cb4 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c0e8ca309c48e535713e9532c0475ff inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a4c0e8ca309c48e535713e9532c0475ff"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_1x1_</b></td></tr>
<tr class="separator:a4c0e8ca309c48e535713e9532c0475ff inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b572cb3c810f3beffaab4fb680c7823 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memItemLeft" align="right" valign="top"><a id="a4b572cb3c810f3beffaab4fb680c7823"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>force_nd_im2col_</b></td></tr>
<tr class="separator:a4b572cb3c810f3beffaab4fb680c7823 inherit pro_attribs_classcaffe_1_1BaseConvolutionLayer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classcaffe_1_1Layer"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classcaffe_1_1Layer')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classcaffe_1_1Layer.html">caffe::Layer&lt; Dtype &gt;</a></td></tr>
<tr class="memitem:a7ed12bb2df25c887e41d7ea9557fc701 inherit pro_attribs_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">LayerParameter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a7ed12bb2df25c887e41d7ea9557fc701">layer_param_</a></td></tr>
<tr class="separator:a7ed12bb2df25c887e41d7ea9557fc701 inherit pro_attribs_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d04ad7f595a82a1c811f102d68b8a19 inherit pro_attribs_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">Phase&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a1d04ad7f595a82a1c811f102d68b8a19">phase_</a></td></tr>
<tr class="separator:a1d04ad7f595a82a1c811f102d68b8a19 inherit pro_attribs_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8073fcf2c139b47eb99ce71b346b1321 inherit pro_attribs_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">vector&lt; shared_ptr&lt; <a class="el" href="classcaffe_1_1Blob.html">Blob</a>&lt; Dtype &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#a8073fcf2c139b47eb99ce71b346b1321">blobs_</a></td></tr>
<tr class="separator:a8073fcf2c139b47eb99ce71b346b1321 inherit pro_attribs_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd4a05def9ff3b42ad72404210613ef7 inherit pro_attribs_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">vector&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#acd4a05def9ff3b42ad72404210613ef7">param_propagate_down_</a></td></tr>
<tr class="separator:acd4a05def9ff3b42ad72404210613ef7 inherit pro_attribs_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6d347229a139500994e7a926c680486 inherit pro_attribs_classcaffe_1_1Layer"><td class="memItemLeft" align="right" valign="top">vector&lt; Dtype &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcaffe_1_1Layer.html#af6d347229a139500994e7a926c680486">loss_</a></td></tr>
<tr class="separator:af6d347229a139500994e7a926c680486 inherit pro_attribs_classcaffe_1_1Layer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Dtype&gt;<br />
class caffe::DeconvolutionLayer&lt; Dtype &gt;</h3>

<p>Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as <a class="el" href="classcaffe_1_1ConvolutionLayer.html" title="Convolves the input image with a bank of learned filters, and (optionally) adds biases. ">ConvolutionLayer</a>. </p>
<p><a class="el" href="classcaffe_1_1ConvolutionLayer.html" title="Convolves the input image with a bank of learned filters, and (optionally) adds biases. ">ConvolutionLayer</a> computes each output value by dotting an input window with a filter; <a class="el" href="classcaffe_1_1DeconvolutionLayer.html" title="Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...">DeconvolutionLayer</a> multiplies each input value by a filter elementwise, and sums over the resulting output windows. In other words, <a class="el" href="classcaffe_1_1DeconvolutionLayer.html" title="Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...">DeconvolutionLayer</a> is <a class="el" href="classcaffe_1_1ConvolutionLayer.html" title="Convolves the input image with a bank of learned filters, and (optionally) adds biases. ">ConvolutionLayer</a> with the forward and backward passes reversed. <a class="el" href="classcaffe_1_1DeconvolutionLayer.html" title="Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...">DeconvolutionLayer</a> reuses ConvolutionParameter for its parameters, but they take the opposite sense as in <a class="el" href="classcaffe_1_1ConvolutionLayer.html" title="Convolves the input image with a bank of learned filters, and (optionally) adds biases. ">ConvolutionLayer</a> (so padding is removed from the output rather than added to the input, and stride results in upsampling rather than downsampling). </p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>include/caffe/layers/<a class="el" href="deconv__layer_8hpp_source.html">deconv_layer.hpp</a></li>
<li>src/caffe/layers/deconv_layer.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Aug 3 2017 23:11:23 for Caffe by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
